package solutions.ferpa.ztest.intf;

import br.com.telescope.adsrt.dom.DomDate;
import br.com.telescope.adsrt.dom.DomId;
import br.com.telescope.adsrt.dom.DomText;
import br.com.telescope.adsrt.lib.Field;
import br.com.telescope.t2.ModuleNavigator;
import br.com.telescope.t2.ServiceModel;
import br.com.telescope.t2.feature.DeleteFeature;
import br.com.telescope.t2.feature.InsertFeature;
import br.com.telescope.t2.feature.ListFeature;
import br.com.telescope.t2.feature.UpdateFeature;
import br.com.telescope.t2.feature.ViewFeature;
import java.util.ArrayList;
import java.util.List;
import solutions.ferpa.ztest.ent.*;

/**
 * Certificados das calibrações.
 * <p>
 * Interface para manutenção de Certificado da calibração
 * <P>
 * Telescope origin: ZTEST.CAD_CERTIFICADO_CALIBRACAO
 * <P>
 * Base entity: ZTEST.CERTIFICADO_CALIBRACAO
 * <P>
 * @author TELESCOPE - Build task T2 Web Interface Generator
 * <P>
 * @version 0.1
 */
public class CadCertificadoCalibracao extends ServiceModel {
    
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    public static final String GLOBAL_NAME = "ZTEST.CAD_CERTIFICADO_CALIBRACAO";
    
    @Override
    public String globalName() {
        return GLOBAL_NAME;
    }
    
    {
        setTitle("Certificados das calibrações");
    }
    
    protected EntCertificadoCalibracao base;
    protected EntCertificadoCalibracao rec; // NEED_TJW1_COMPATIBILITY
    
    // Service parameters
    private DomId pIdInstrumentoEnsaio;
    
    // Record items
    private DomDate aDataCalibracao;
    private DomDate aDataValidade;
    private DomText aCertificado;
    private DomId aId;
    private DomId aInstrumentoEnsaioId;
    
    // Query items
    
    @Override
    public String getBaseSql() {
        return "select BASE.*"
                + " from CERTIFICADO_CALIBRACAO BASE";
    }
    
    @Override
    public void initAttributes() {
        
        aDataCalibracao = new DomDate();
        aDataCalibracao.context(ctx).name("DATA_CALIBRACAO").label("Data da calibração");
        
        aDataValidade = new DomDate();
        aDataValidade.context(ctx).name("DATA_VALIDADE").label("Data de validade da calibração");
        
        aCertificado = new DomText();
        aCertificado.context(ctx).name("CERTIFICADO").label("Certificado da calibração");
        
        aId = new DomId();
        aId.context(ctx).name("ID").label("Id");
        
        aInstrumentoEnsaioId = new DomId();
        aInstrumentoEnsaioId.context(ctx).name("INSTRUMENTO_ENSAIO_ID").label("Instrumento de ensaio");
        
    }
    
    @Override
    public void initParameters() {
        pIdInstrumentoEnsaio = new DomId(ctx, "ID_INSTRUMENTO_ENSAIO", "Instrumento de ensaio");
        pIdInstrumentoEnsaio.setValue(ctx.getParameter("P_ID_INSTRUMENTO_ENSAIO"));
        pIdInstrumentoEnsaio.setSqlExpression("INSTRUMENTO_ENSAIO_ID");
        if (pIdInstrumentoEnsaio.isNotNull()) {
            aInstrumentoEnsaioId.setValue(pIdInstrumentoEnsaio.getValue());
        }
    }
    
    @Override
    public List<Field> getParameters() {
        if (allParameters == null) {
            allParameters = new ArrayList<Field>();
            allParameters.add(pIdInstrumentoEnsaio);
        }
        return allParameters;
    }
    
    @Override
    public void copyBindParameters() {
        EntCertificadoCalibracao record = getRecord();
        if (pIdInstrumentoEnsaio.isNotNull()) {
            record.setInstrumentoEnsaioId(pIdInstrumentoEnsaio.getValue());
        }
    }
    
    @Override
    public void retrieveBindParameters() {
        pIdInstrumentoEnsaio.setValue(getRecord().valueOfInstrumentoEnsaioId());
    }
    
    @Override
    public String getQueryPkColumn() {
        return "BASE.ID";
    }
    
    @Override
    public void setId(String value) {
        this.aId.setValue(value);
    }
    
    @Override
    public EntCertificadoCalibracao getRecord() {
        if (base == null) {
            base = new EntCertificadoCalibracao(ctx);
            rec = base;
        }
        return this.base;
    }
    
    @Override
    public String getContextName() {
        return aDataCalibracao.toText();
    }
    
    @Override
    public String getDefaultOrderBy() {
        return "DATA_CALIBRACAO, DATA_VALIDADE, CERTIFICADO";
    }
    
    @Override
    public ModuleNavigator getDefaultModuleNavigator() {
        return new ModCertificCalibr();
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="LIST">
    public class FList extends ListFeature {
        
        @Override
        public void initForm() {
            addField(aDataCalibracao, "view");
            addField(aDataValidade, "view");
            addField(aCertificado, "view");
        }
        
        {
            setFeatureName("LIST");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="VIEW">
    public class FView extends ViewFeature {
        
        @Override
        public void initForm() {
            addField(aDataCalibracao, "view");
            addField(aDataValidade, "view");
            addField(aCertificado, "view");
        }
        
        {
            setFeatureName("VIEW");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="INSERT">
    public class FInsert extends InsertFeature {
        
        @Override
        public void initForm() {
            aDataCalibracao.setOptional(false);
            addField(aDataCalibracao, "rqd");
            aDataValidade.setOptional(false);
            addField(aDataValidade, "rqd");
            aCertificado.setOptional(false);
            addField(aCertificado, "rqd");
        }
        
        {
            setFeatureName("INSERT");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="UPDATE">
    public class FUpdate extends UpdateFeature {
        
        @Override
        public void initForm() {
            aDataCalibracao.setOptional(false);
            addField(aDataCalibracao, "rqd");
            aDataValidade.setOptional(false);
            addField(aDataValidade, "rqd");
            aCertificado.setOptional(false);
            addField(aCertificado, "rqd");
        }
        
        {
            setFeatureName("UPDATE");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="DELETE">
    public class FDelete extends DeleteFeature {
        
        @Override
        public void initForm() {
        }
        
        {
            setFeatureName("DELETE");
            setPrimary(false);
        }
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="initFeatures">
    
    @Override
    protected void initFeatures() {
        addFeature(new FList());
        addFeature(new FView());
        addFeature(new FInsert());
        addFeature(new FUpdate());
        addFeature(new FDelete());
        super.initFeatures();
    }
    
    @Override
    public String getDefaultFeature() {
        return "LIST";
    }
    // </editor-fold>
    
    // <editor-fold defaultstate="collapsed" desc="Getters and Setters">
    
    public java.sql.Date getDataCalibracao() {
        return aDataCalibracao.getValue();
    }
    
    public void setDataCalibracao(java.sql.Date value) {
        this.aDataCalibracao.setValue(value);
    }
    
    public java.sql.Date getDataValidade() {
        return aDataValidade.getValue();
    }
    
    public void setDataValidade(java.sql.Date value) {
        this.aDataValidade.setValue(value);
    }
    
    public String getCertificado() {
        return aCertificado.getValue();
    }
    
    public void setCertificado(String value) {
        this.aCertificado.setValue(value);
    }
    
    @Override
    public Long getId() {
        return aId.getValue();
    }
    
    public void setId(Long value) {
        this.aId.setValue(value);
    }
    
    public Long getInstrumentoEnsaioId() {
        return aInstrumentoEnsaioId.getValue();
    }
    
    public void setInstrumentoEnsaioId(Long value) {
        this.aInstrumentoEnsaioId.setValue(value);
    }
    
    public Long getParameterIdInstrumentoEnsaio() {
        return pIdInstrumentoEnsaio.getValue();
    }
    
    public void setParameterIdInstrumentoEnsaio(Long value) {
        pIdInstrumentoEnsaio.setValue(value);
        aInstrumentoEnsaioId.setValue(value);
    }
    // </editor-fold>
    
}
